package cn.tedu.oop;
/**本类用于抽象类的入门案例*/
public class AbstractDemo {

}
/**2.被abstract修饰的类是抽象类
 * 如果一个类中包含了抽象方法，那么这个类必须被声明成一个抽象类*/
abstract class Car{

    public void start(){
        System.out.println("启动");
    }
    public void stop(){
        System.out.println("停止");
    }
    /**1.被abstract修饰的方法时抽象方法，抽象方法没有方法体*/
    public abstract void fly();
    public abstract void fly2();
}
/**当一个子类继承了抽象父类以后，有两种解决方案：
 * 方案1：变成抽象子类，"躺平，我也不实现，继续抽象"
 * 方案2：实现抽象父类中的所有抽象方法，"父债子还"*/
class BMW extends Car{
    public void fly() {
        System.out.println("我的车车终于能飞了");
    }
    public void fly2() {
        System.out.println("必须实现抽象父类的所有抽象方法");
    }
}